Package $clientSideEOFPackage

Source Code of $clientSideEOFPackage.MyGenericRecord

package $clientSideEOFPackage;

import com.webobjects.eoapplication.EOController;
import com.webobjects.eoapplication.EOEditable;
import com.webobjects.eocontrol.EOEditingContext;
import com.webobjects.eocontrol.EOFetchSpecification;
import com.webobjects.eocontrol.EOGenericRecord;
import com.webobjects.eocontrol.EOGlobalID;
import com.webobjects.eocontrol.EOObjectStore;
import com.webobjects.eodistribution.client.EODistributedObjectStore;
import com.webobjects.eogeneration.EOControllerFactory;
import com.webobjects.eogeneration.EOFormController;
import com.webobjects.eogeneration.EOListController;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSDictionary;

@SuppressWarnings("unchecked")
public class MyGenericRecord extends
                            EOGenericRecord {

  /**
     *
     */
  private static final long serialVersionUID = 1L;

  public static EODistributedObjectStore _distributedObjectStore() {
    EOObjectStore objectStore = EOEditingContext.defaultParentObjectStore();
    if (objectStore == null || !(objectStore instanceof EODistributedObjectStore)) {
      throw new IllegalStateException("Default parent object store needs to be an EODistributedObjectStore");
    }
    return (EODistributedObjectStore) objectStore;
  }

  public static void formWithEntityName(String entityName,
                                        EOGlobalID globalID) {
    EOControllerFactory f = EOControllerFactory.sharedControllerFactory();
    EOController controller = f.controllerWithSpecification(new NSDictionary(new Object[] { entityName,
                                                                                           EOControllerFactory.FormTask,
                                                                                           EOControllerFactory.TopLevelWindowQuestion },
                                                                             new Object[] { EOControllerFactory.EntitySpecification,
                                                                                           EOControllerFactory.TaskSpecification,
                                                                                           EOControllerFactory.QuestionSpecification }),
                                                            true);
    if (controller != null) {
      EOFormController formController = (EOFormController) f.controllerWithEntityName(controller,
                                                                                      EOControllerFactory.Open.class,
                                                                                      entityName);
      formController.openObjectWithGlobalID(globalID);
      formController.setEditability(EOEditable.AlwaysEditable);
      formController.makeVisible();
    }
  }

  /**
   * Invokes {@link #invokeStatelessRemoteMethodWithKeyPath(String, String, Class[], Object[])} with "session" as the
   * key path argument.
   */
  public static Object invokeStatelessOnSession(String methodName,
                                                Class[] argumentTypes,
                                                Object[] arguments) {

    return invokeStatelessRemoteMethodWithKeyPath("session",
                                                  methodName,
                                                  argumentTypes,
                                                  arguments);
  }

  /**
   * This method invokes a remote method on an object on the server side that can be specified with a key path (no
   * enterprise object) relative to the invocation target of the server side EODistributionContext (for example
   * "session"). The arguments and return values of remote methods invoked through this method cannot be enterprise
   * objects (but global IDs are okay). You can use this method, for example, to load resources from the server or to
   * perform checks in background threads (as long as no enterprise objects are involved).
   * <p>
   * The keyPath argument has special semantics: <ol type="a"}
   * <li>If keyPath is a fully qualified key path (for example, "session"), the key path is followed starting from the
   * invocation target of the EODistributionContext.
   * <li>If keyPath is an empty string, the method is invoked on the invocation target of the EODistributionContext
   * directly (typically a subclass of WOJavaClientComponent).
   * <li>If keyPath is null, the method is invoked on one of the remote method receivers of the server side
   * EODistributionContext. </ol>
   * <p>
   * If an actual key path is specified, the EODistributionContext on the server blocks all invocations sent with this
   * method unless methodName is prefixed with "clientSideRequest" or unless the EODistributionContext's delegate (on
   * the server) implements the right delegate methods to explicitly allow the invocation. "clientSideRequest" methods
   * can be invoked without special delegate methods on the server-side distribution context, on a remote method
   * receiver registered with the distribution context or on the session of the distribution context's invocation
   * target.
   *
   * @param keyPath
   *            the key path identifying the receiver of the method invocation
   * @param methodName
   *            the name of the method to be invoked
   * @param argumentTypes
   *            the types of the arguments of the method to be invoked
   * @param arguments
   *            the arguments of the method to be invoked
   * @return the return value of the remote method invocation
   */
  public static Object invokeStatelessRemoteMethodWithKeyPath(String keyPath,
                                                              String methodName,
                                                              Class[] argumentTypes,
                                                              Object[] arguments) {
    if (_distributedObjectStore() == null) {
      throw new IllegalStateException("Distributed object store is null, can not perform RMI");
    }

    return _distributedObjectStore().invokeStatelessRemoteMethodWithKeyPath(keyPath,
                                                                            methodName,
                                                                            argumentTypes,
                                                                            arguments);
  }

  public static void listWithEntityName(String entityName,
                                        EOFetchSpecification fs) {
    EOControllerFactory f = EOControllerFactory.sharedControllerFactory();
    EOController controller = f.controllerWithSpecification(new NSDictionary(new Object[] { entityName,
                                                                                           EOControllerFactory.ListTask,
                                                                                           EOControllerFactory.TopLevelWindowQuestion },
                                                                             new Object[] { EOControllerFactory.EntitySpecification,
                                                                                           EOControllerFactory.TaskSpecification,
                                                                                           EOControllerFactory.QuestionSpecification }),
                                                            true);
    if (controller != null) {
      EOListController listController = (EOListController) f.controllerWithEntityName(controller,
                                                                                      EOControllerFactory.List.class,
                                                                                      entityName);
      listController.listObjectsWithFetchSpecification(fs);
      listController.setEditability(EOEditable.NeverEditable);
      listController.makeVisible();
    }
  }

  public static void listWithEntityName(String entityName,
                                        NSArray arrayOfEOs) {
    EOControllerFactory f = EOControllerFactory.sharedControllerFactory();
    EOController controller = f.controllerWithSpecification(new NSDictionary(new Object[] { entityName,
                                                                                           EOControllerFactory.ListTask,
                                                                                           EOControllerFactory.TopLevelWindowQuestion },
                                                                             new Object[] { EOControllerFactory.EntitySpecification,
                                                                                           EOControllerFactory.TaskSpecification,
                                                                                           EOControllerFactory.QuestionSpecification }),
                                                            true);
    if (controller != null) {
      EOListController listController = (EOListController) f.controllerWithEntityName(controller,
                                                                                      EOControllerFactory.List.class,
                                                                                      entityName);
      listController.listObjectsWithGlobalIDs((NSArray) arrayOfEOs.valueForKey("globalID"));
      listController.setEditability(EOEditable.NeverEditable);
      listController.makeVisible();
    }
  }

  public MyGenericRecord() {
    super();
  }

  @Override
  public void awakeFromInsertion(EOEditingContext ec) {
    super.awakeFromInsertion(ec);
  }

  public EOGlobalID globalID() {
    return editingContext().globalIDForObject(this);
  }

}
TOP

Related Classes of $clientSideEOFPackage.MyGenericRecord

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.